﻿using LitJson;
using System;

namespace CGF
{
    public static class JsonExtend
    {
        public static JsonData ToJsonData(this string str)
        {
            try
            {
                return JsonMapper.ToObject(str);
            }
            catch (Exception ex)
            {
                Debug.LogError(ex);
                return null;
            }
        }
        
        public static string ToJson(this object array)
        {
            try
            {
                return JsonMapper.ToJson(array);
            }
            catch (Exception ex)
            {
                Debug.LogError(ex);
                return null;
            }
        }
        
        public static int Int(this JsonData jsonData, string key)
        {
            if (jsonData[key].IsLong)
            {
                return Convert.ToInt32((long)jsonData[key]);
            }
            return (int)jsonData[key];
        }
        
        public static long Long(this JsonData jsonData, string key)
        {
            if (jsonData[key].IsInt)
            {
                return Convert.ToInt64((int)jsonData[key]);
            }
            return (long)jsonData[key];
        }
        
        public static float Float(this JsonData jsonData, string key)
        {
            if (jsonData[key].IsDouble)
            {
                return Convert.ToSingle((double)jsonData[key]);
            }
            return (float)jsonData[key];
        }
        
        public static double Double(this JsonData jsonData, string key)
        {
            return (double)jsonData[key];
        }
        
        public static string String(this JsonData jsonData, string key)
        {
            return (string)jsonData[key];
        }
        
        public static bool Bool(this JsonData jsonData, string key)
        {
            return (bool)jsonData[key];
        }
    }
}
